﻿namespace WMS6.Services
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.ServiceModel;
    using WMS6.Common;
    using WMS6.DataEntity;
    using WMS6.QueryEntity;

    [ServiceContract(Namespace="WMS6.Services")]
    public interface IInventoryMgtService
    {
        [OperationContract, ServiceKnownType(typeof(TransferInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(PubParasInfo))]
        string BatchInsertInvTransfer(TransferInfo transferInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), OperationContract]
        string DeleteAdJustMent(List<string> IDS, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string DeleteAdJustMentDetail(string IDS, List<string> LineID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string DeleteInvHold(List<string> InvHoldID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract]
        string DeleteLpn(List<string> LpnID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), OperationContract]
        string DeteleTransferDetailInfo(List<string> transferIDs, List<string> lineIDs, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(AdjustmentDetailInfo)), ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), OperationContract]
        string ExecuteInvAdjustment(AdjustmentDetailInfo AdjustmentDetail, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvHoldInfo)), OperationContract]
        string ExecuteInvHold(InvHoldInfo invHoldInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvMovesInfo))]
        string ExecuteInvMoves(List<InvMovesInfo> invMovesInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(TransferInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string ExecuteInvTransfer(string transferID, List<string> line, string updatedBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail))]
        DataSet GetAllInvTrans(PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(InventoryInfo))]
        InventoryInfo GetInventoryInfoByLpnID(string lpnID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(InventoryQueryEntity)), OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail))]
        DataSet GetInventroyByQueryEnetiy(InventoryQueryEntity inventoryQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(InvHoldInfo)), ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), OperationContract]
        InvHoldInfo GetInvHoldInfoByID(string invHoldID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(InvHoldQueryEntity)), FaultContract(typeof(FaultDetail)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetInvHoldInfoByQueryEntity(InvHoldQueryEntity invHoldQueryEntity, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvLotLocLpnInfo))]
        InvLotLocLpnInfo GetInvLotLocLpnByID(string lot, string loc, string lpnID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvLotLocLpnInfo))]
        DataSet GetInvLotLocLpnByQueryEntity(InvLotLocLpnQueryEntity invlotloclpnQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvTransInfo))]
        InvTransInfo GetInvTransByID(string invtransID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvTransInfo))]
        DataSet GetInvTransByQueryList(InvTransQueryEntity invtransQuery, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(TransferQueryEntity))]
        DataSet GetInvTransferInfoByQueryEntity(TransferQueryEntity transferQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(LotAttributeInfo))]
        LotAttributeInfo GetLotAttributeInfoByID(string lotAttributeID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(LotAttributeQueryEntity)), ServiceKnownType(typeof(InventoryQueryEntity))]
        DataSet GetLotAttributeInfoByQueryEntity(LotAttributeQueryEntity lotAttributeQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(LpnInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        LpnInfo GetLpnByID(string lpnID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(LpnQueryEntity)), FaultContract(typeof(FaultDetail)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetLpnByQueryList(LpnQueryEntity lpnQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string GetMaxLpnByLpnID(string lpnID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(TransferDetailInfo)), ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail))]
        TransferDetailInfo GetTransferDetailInfo(string transferID, string LineID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(TransferInfo)), FaultContract(typeof(FaultDetail))]
        TransferInfo GetTransferInfoByID(string transferID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(AdjustmentInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string InsertAdJustMent(AdjustmentInfo obj, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(AdjustmentInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string InsertAdJustMentDetail(AdjustmentDetailInfo obj, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(LpnInfo))]
        string InsertLpn(LpnInfo lpnInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(TransferDetailInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string InsertTransferDetailInfo(TransferDetailInfo transferDetailInfo, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(TransferInfo)), ServiceKnownType(typeof(PubParasInfo))]
        string InsertTransferInfo(TransferInfo transferInfo, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(LpnInfo))]
        string LpnSplit(List<LpnInfo> NewLpnInfo, InventoryInfo inventoryInfo, string strLpnID, string SplitType, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(AdjustmentInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string UpdateAdJustMent(AdjustmentInfo obj, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(AdjustmentInfo)), OperationContract]
        string UpdateAdJustMentDetail(AdjustmentDetailInfo obj, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(LpnInfo))]
        string UpdateLpn(LpnInfo lpnInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(TransferDetailInfo))]
        string UpdateTransferDetailInfo(TransferDetailInfo transferDetailInfo, PubParasInfo pubParasInfo);
    }
}

